bitkeeper revision 1.825.3.6 (4064639dGSejbtZOrnsOB_IspAZ6kw)
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Fri, 26 Mar 2004 17:08:45 +0000 (17:08 +0000)
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>
Fri, 26 Mar 2004 17:08:45 +0000 (17:08 +0000)
blkdev.h, pci.c, Makefile, domain.c, setup.c, entry.S, Rules.mk:
  Allow Xen to be built without device drivers using 'nodev=y make'.

xen/Rules.mk
xen/arch/i386/entry.S
xen/arch/i386/setup.c
xen/common/domain.c
xen/drivers/Makefile
xen/drivers/pci/pci.c
xen/include/xen/blkdev.h

index bd6936566da361b9e1a42c1bc656132e6dd78a5b..da2d24cdda7934adb486be956e37b9448b87b7fb 100644 (file)
@@ -1,6 +1,8 @@
 COMPILE_ARCH := $(shell uname -m | sed -e s/i.86/i386/)
 TARGET_ARCH  ?= $(COMPILE_ARCH)
 
+nodev ?= n
+
 TARGET  := $(BASEDIR)/xen
 HDRS    := $(wildcard $(BASEDIR)/include/xen/*.h)
 HDRS    += $(wildcard $(BASEDIR)/include/scsi/*.h)
@@ -20,11 +22,13 @@ ALL_OBJS += $(BASEDIR)/net/network.o
 ALL_OBJS += $(BASEDIR)/drivers/char/driver.o
 ALL_OBJS += $(BASEDIR)/drivers/pci/driver.o
 ALL_OBJS += $(BASEDIR)/drivers/net/driver.o
+ifneq ($(nodev),y)
 ALL_OBJS += $(BASEDIR)/drivers/block/driver.o
 ALL_OBJS += $(BASEDIR)/drivers/cdrom/driver.o
 ALL_OBJS += $(BASEDIR)/drivers/ide/driver.o
 ALL_OBJS += $(BASEDIR)/drivers/scsi/driver.o
 ALL_OBJS += $(BASEDIR)/drivers/message/fusion/driver.o
+endif
 ALL_OBJS += $(BASEDIR)/arch/$(TARGET_ARCH)/arch.o
 
 HOSTCC     = gcc
@@ -32,6 +36,11 @@ HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer
 
 include $(BASEDIR)/arch/$(TARGET_ARCH)/Rules.mk
 
+ifeq ($(nodev),y)
+CFLAGS += -DNO_DEVICES_IN_XEN
+CFLAGS := $(subst -Werror,,$(CFLAGS))
+endif
+
 %.o: %.c $(HDRS) Makefile
        $(CC) $(CFLAGS) -c $< -o $@
 
index 8db1f2007455bf13da2e7f0f1db6cef84ecf6823..eab11e5ad8af45d8792132f70317de56ed5b94c9 100644 (file)
@@ -712,7 +712,11 @@ ENTRY(hypervisor_call_table)
         .long SYMBOL_NAME(do_sched_op)
         .long SYMBOL_NAME(do_dom0_op)
         .long SYMBOL_NAME(do_network_op)         /* 10 */
+#ifndef NO_DEVICES_IN_XEN
         .long SYMBOL_NAME(do_block_io_op)
+#else
+        .long SYMBOL_NAME(do_ni_syscall)
+#endif
         .long SYMBOL_NAME(do_set_debugreg)
         .long SYMBOL_NAME(do_get_debugreg)
         .long SYMBOL_NAME(do_update_descriptor)
index 06271e3b460d916121bc8d1a6868c0eb5f25c4fd..318d8cff90ef3305ca693287b319b6e23adfc1a3 100644 (file)
@@ -420,7 +420,9 @@ void __init start_of_day(void)
     if ( !setup_network_devices() )
         panic("Must have a network device!\n");
     net_init();            /* initializes virtual network system. */
+#ifndef NO_DEVICES_IN_XEN
     initialize_block_io(); /* setup block devices */
+#endif
 
 #ifdef CONFIG_SMP
     wait_init_idle = cpu_online_map;
index 0783f7f838327d600bb4756a3a61e4c05b5bb962..5be1be9b06a480f02e7eed0bd8514e0d7bb4a8ad 100644 (file)
@@ -822,6 +822,7 @@ int setup_guestos(struct task_struct *p, dom0_createdomain_t *params,
     write_cr3_counted(pagetable_val(current->mm.pagetable));
     __sti();
 
+#ifndef NO_DEVICES_IN_XEN
     /* DOM0 gets access to all real block devices. */
 #define MAX_REAL_DISKS 256
     xd = kmalloc(MAX_REAL_DISKS * sizeof(xen_disk_t), GFP_KERNEL);
@@ -843,6 +844,7 @@ int setup_guestos(struct task_struct *p, dom0_createdomain_t *params,
             BUG();
     }
     kfree(xd);
+#endif
 
     /* DOM0 gets access to everything. */
     physdev_init_dom0(p);
index 2d969e41be1705341cd2d0d8171f6753a0469fdf..902add28e5f3175da61fd1683288175f38a43c65 100644 (file)
@@ -3,11 +3,13 @@ default:
        $(MAKE) -C char
        $(MAKE) -C pci
        $(MAKE) -C net
-       $(MAKE) -C block
-       $(MAKE) -C cdrom
-       $(MAKE) -C ide
-       $(MAKE) -C scsi
-       $(MAKE) -C message/fusion
+       if [ "$(nodev)" != "y" ]; then \
+       $(MAKE) -C block ; \
+       $(MAKE) -C cdrom ; \
+       $(MAKE) -C ide ; \
+       $(MAKE) -C scsi ; \
+       $(MAKE) -C message/fusion ; \
+       fi
 
 clean:
        $(MAKE) -C char clean
index c6e9c47ad82ba1f54da126f53bf03ab51a00da8a..fa606c7fbc2326cdfda9ce31878e3562372efc32 100644 (file)
@@ -656,6 +656,7 @@ out:
 int
 pci_register_driver(struct pci_driver *drv)
 {
+#ifndef NO_DEVICES_IN_XEN
        struct pci_dev *dev;
        int count = 0;
 
@@ -665,6 +666,9 @@ pci_register_driver(struct pci_driver *drv)
                        count += pci_announce_device(drv, dev);
        }
        return count;
+#else
+       return 0;
+#endif
 }
 
 /**
@@ -680,6 +684,7 @@ pci_register_driver(struct pci_driver *drv)
 void
 pci_unregister_driver(struct pci_driver *drv)
 {
+#ifndef NO_DEVICES_IN_XEN
        struct pci_dev *dev;
 
        list_del(&drv->node);
@@ -690,6 +695,7 @@ pci_unregister_driver(struct pci_driver *drv)
                        dev->driver = NULL;
                }
        }
+#endif
 }
 
 #ifdef CONFIG_HOTPLUG
index c3dbc32b2f89f7c972d0d12e3611daea4f0218af..b53f1e645be9f44be134bb5991b84981c3f5194b 100644 (file)
@@ -26,9 +26,15 @@ typedef struct {
 
 extern kdev_t xendev_to_physdev(unsigned short xendev);
 
+#ifndef NO_DEVICES_IN_XEN
 extern void init_blkdev_info(struct task_struct *);
 extern void unlink_blkdev_info(struct task_struct *);
 extern void destroy_blkdev_info(struct task_struct *);
+#else
+#define init_blkdev_info(_p)    ((void)0)
+#define unlink_blkdev_info(_p)  ((void)0)
+#define destroy_blkdev_info(_p) ((void)0)
+#endif
 
 extern int unregister_blkdev(unsigned int, const char *);
 extern int invalidate_device(kdev_t, int);